// 函数类型
export { };

// 1. 函数声明
function fn(a: number, b: number): number {
	return a + b
}

fn(123, 321)
fn(1, 1)

// 2. 函数表达式
const f = (a: number, b: number): number => {
	return a + b
}



// 需求： 
// 要求封装一个函数，该函数可以接受1, 2, 4个参数
// 这个时候可以利用函数重载
interface Dir {
	a: string
	b: string
	c: string
	d: string
}

// 函数重载
function testFn(a: string): Dir
function testFn(a: string, b: string): Dir
function testFn(a: string, b: string, c: string, d: string): Dir

function testFn(a: string, b?: string, c?: string, d?: string): Dir {
	if (typeof b === 'undefined' && typeof c === 'undefined' && typeof d === 'undefined') {
		b = c = d = a
		return { a, b, c, d }
	} else if (typeof b === 'string' && typeof c === 'undefined' && typeof d === 'undefined') {
		c = a
		d = b
		return { a, b, c, d }
	} else if (b && c && d) {
		return { a, b, c, d }
	}
	b = c = d = a
	return { a, b, c, d }
}



